Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the exchange of electronic messages between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
Networks have in fact become so prolific that a simple network-enabled computing system may communicate with any one of millions of other computing systems spread throughout the globe over a conglomeration of networks often referred to as the “Internet”. Such computing systems may include desktop, laptop, or tablet personal computers; Personal Digital Assistants (PDAs); telephones; or any other computer or device capable of communicating over a digital network.
In some network computing environments, content, such as, for example, electronic mail messages, documents, or account information, are stored in a network accessible database maintained at a server computer system. Client computer systems communicate electronically with the server to manipulate content stored in the database. For example, a user can enter commands causing a client computer system to retrieve account information for a specified client from a network accessible database. The user can then manipulate the account information and send the manipulated account information back to the network accessible database for storage. Advantageously, the manipulated account information is then accessible to any number of other users who can make further changes.
However, network based (or “online”) interaction with centrally stored content is at least in part dependent on network connectively. Thus, when network connectively degrades (e.g., available bandwidth is reduced, connectively is intermediately interrupted, or connectively is lost) accessing and manipulating network based content can become difficult, if not impossible. Accordingly, various techniques have been developed to facilitate seamless interaction with networked based content even when network connectively degrades (and a client is relegated to “offline” operation).
For example, caching is one commonly used technique for facilitating seamless interaction with network based content when network connectively degrades. Generally, caching involves storing frequently requested data at a location where the data can be quickly (and often locally) retrieved. For example, an administrator can configure settings that cause a client computer system to store network based content locally. Thus, a user of the client computer system has access to the networked based content even when network connectively degrades. Caching also facilitates more efficient access, since locally stored content can be accessed more efficiently than data stored at a remote database.
Caching network based content is typically dependent on how an administrator configures cache settings. For example, an administrator may be able to configure settings such that content from a network based database is or is not locally cached at client computer systems. However, the granularity of cache configuration settings is often limited. Thus, an administrator may find it difficult, if not impossible, to configure cache settings such that only relevant portions of content are cached at each client computer system.
Accordingly, to provide a user with relevant cached content, an administrator may have to configure cache settings such that large quantities of other non-relevant content are also cached. For example, to cache relevant accounts for a particular account manger, cache settings may need to be configured such that all accounts are cached at the account manger's client computer system, even accounts not associated with the account manager. This is unfortunate, since large quantities of non-relevant content consume system resources and provide little if any benefit to a user. As a result, client computer systems that lack the necessary resources may be prevented from caching content at all. Further, a user of a client computer system may not want non-relevant content and may choose not to cache any content. For example, in some environments, offline space may be limited and synchronization processes may be inconvenient because it takes to long to take all the content offline.
Some caching mechanisms allow users to reduce the amount of offline content by subscribing to specific information. However, obtaining relevant content may require the user to change their subscription at frequent intervals. For example, a user may receive frequent tasks requiring that they work with specific customers for a brief period of time. Thus, to cache relevant customer content (orders, history, unpaid bills, etc.), a user may be required to change their subscription each time a task is assigned and each time a task is completed. Further, even relevant information for a specific customer can change as different portions of a task are completed. For example, after auditing a customer's bills, unpaid bills data may no longer be relevant. However, until a corresponding subscription is updated this content may continue to be cached. Thus, configuring cache subscriptions to cache only relevant content is a highly manual operation. As a result, cache subscriptions are often not used.